package com.wnxy.mallserver.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.wnxy.mallserver.mapper.CartMappper;
import com.wnxy.mallserver.response.ResPage;
import com.wnxy.mallserver.service.CartService;
import com.wnxy.mallserver.vo.AddCartVo;
import com.wnxy.mallserver.vo.CartVo;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

@Service
public class CartServiceImpl implements CartService {
    //mapper注入
    @Resource
    private CartMappper cartMappper;

    /**通过cids集合去查询商品*/
    @Override
    public List<CartVo> findByCids(List<Integer> cids) {
        return cartMappper.findByCids(cids);
    }

    /**将商品加入购物车*/
    @Transactional//只要是增删改，都要添加事务
    @Override
    public boolean add(AddCartVo addCartVo) {
        //如果是同一个商品添加购物车，则修改该条数据
       if(cartMappper.update(addCartVo)) {
           return true;
       }
        return cartMappper.add(addCartVo);
    }

    /**
     * 根据用户id查询购物车中的商品信息
     */
    @Override
    public ResPage<List<CartVo>> queryCartByUid(int uid, Integer page, Integer size) {
        //1.实现分页的逻辑
        PageHelper.startPage(page,size);
        List<CartVo> cartVoList = cartMappper.queryCartByUid(uid);
        //获取分页信息--pageHelper自动将分页信息封装成了一个对象
        PageInfo<CartVo> pf = new PageInfo<>(cartVoList);
        return new ResPage<>(pf.getPageNum(),pf.getSize(),pf.getTotal(),pf.getPages(),pf.getList());
    }

    @Transactional
    @Override
    public boolean delById(Integer id) {
        return cartMappper.delById(id);
    }

    @Transactional
    @Override
    public void delByIds(List<Integer> cids) {
        cids.forEach(cid ->{
            cartMappper.delById(cid);
        });
    }
}
